#include <iostream>
#include <vector>

/**
 * 返回分隔后字符串的个数
 * 
 * str：要分割的字符串
 * sep：分隔符
 * result：结果 
 */
size_t split(const std::string& str,const std::string& sep,std::vector<std::string>& result){
    //将str 通过 sep 分隔
    //将结果全部存放到 result
    int pos = 0 , idx = 0;//pos表示要分割的字符串的首位置,idx表示分隔符的下标
    while(idx <= str.size()){
        idx = str.find(sep,pos);
        if(idx == std::string::npos){
            //如果找不到就表示不需要分隔
            std::string tmp_str = str.substr(pos);
            std::cout << tmp_str << std::endl;

            result.push_back(tmp_str);//不写len，直接将所有都获取了
            return result.size();

        }
        //需要将出现连续分隔符的情况进行 特殊处理： news....music.#.pop 此处就 . 为分割符 就会出现连续的问题，而出现连续的时候，会截取到空字符串，就没必要

        if(pos == idx)//当出现连续时 pos 会等于 idx 
        {
            pos = idx + sep.length();//注意也需要往前走哈
            continue; 
        }
        std::string tmp_str = str.substr(pos,idx - pos);
        std::cout << tmp_str << std::endl;
        result.push_back(tmp_str);//len = idx - pos
        pos = idx + sep.length();//
    }
    return result.size();
}

int main(){
    std::vector<std::string> res;
    std::cout << split("news....music.#.pop",".",res) << std::endl;
    
    // for(auto& s : res){
    //     std::cout << s << std::endl; 
    // }
    return 0;
}